import logging

# logger 收集日志 debug info error
# handler 输入出日志的渠道 指定的文件 还是控制台 默认到控制台
class MyLog():

    def my_log(self, msg, level):
        # 定义一个日志收集器    需要自己设置日志级别  如果不设置级别,默认从warning级别 开始收集
        my_logger = logging.getLogger('web自动化测试')

        # 设定级别
        my_logger.setLevel('DEBUG')

        # 第一 收集器  第二 输出渠道

        # 设置输出格式
        formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-%(name)s-日志信息:%(message)s')
        # 创建一个我们自己的输出渠道    默认会输出到控制台, 可以设置级别
        ch = logging.StreamHandler()
        ch.setLevel('DEBUG')
        ch.setFormatter(formatter)
        # fh = logging.FileHandler('../test_result/logs/test_log.txt', encoding='utf-8')
        fh = logging.FileHandler('../test_result/logs/test_log.txt', encoding='utf-8')
        fh.setLevel('DEBUG')
        fh.setFormatter(formatter)

        # 将收集器和输出渠道对接起来--指定输出渠道
        my_logger.addHandler(ch)
        my_logger.addHandler(fh)

        # 收集日志
        if level == 'DEBUG':
            my_logger.debug(msg)
        elif level == 'ERROR':
            my_logger.error(msg)
        elif level == 'INFO':
            my_logger.info(msg)
        elif level == 'WARNING':
            my_logger.warning(msg)
        elif level == 'CRITICAL':
            my_logger.critical(msg)

        # 关闭渠道  用完记得移除掉
        my_logger.removeHandler(ch)
        my_logger.removeHandler(fh)

    def debug(self, msg):
        self.my_log(msg, 'DEBUG')

    def info(self, msg):
        self.my_log(msg, 'INFO')

    def error(self, msg):
        self.my_log(msg, 'ERROR')

    def warning(self, msg):
        self.my_log(msg, 'WARNING')

    def critical(self, msg):
        self.my_log(msg, 'CRITICAL')

if __name__ == '__main__':
    MyLog().my_log('allen is a good man1', 'DEBUG')
    MyLog().my_log('allen is a good man2', 'ERROR')
    MyLog().debug('allen is a good man3')